//
//  HMOAuthViewController.swift
//  新浪微博
//
//  Created by 饶鹏伟 on 16/4/9.
//  Copyright © 2016年 饶鹏伟. All rights reserved.
//

import UIKit
import SVProgressHUD

class HMOAuthViewController: UIViewController {
    
    
    //自定义根视图为webview
    let webView=UIWebView()
    
    override func loadView() {
        
        view=webView
        
        //设置webView代理
        webView.delegate=self
    }
    

    override func viewDidLoad() {
        super.viewDidLoad()

        //设置导航条内容
        navigationItem.leftBarButtonItem=UIBarButtonItem(title: "关闭", target: self, action: "close")
        navigationItem.rightBarButtonItem=UIBarButtonItem(title: "自动填充", target: self, action: "fullAcccount")
        
        //使用webview加载授权页面  拼接urlStirng  请求授权的url请求用户授权Token
        let urlStirng = "https://api.weibo.com/oauth2/authorize?" + "client_id=" + client_id + "&redirect_uri=" + redirect_uri
        //创建url
        let url=NSURL(string: urlStirng)
        //创建请求
        let quest=NSURLRequest(URL: url!)
        //发送请求
        webView.loadRequest(quest)
        
    
    }
    
    //关闭授权页面
    @objc private func close (){
    //返回控制器
    dismissViewControllerAnimated(true, completion: nil)
    
    }

    //自动填充密码 和 账号
    @objc private func fullAcccount (){
        
        //设置默认的账号和密码
        webView.stringByEvaluatingJavaScriptFromString("document.getElementById('userId').value = '785275306@qq.com', document.getElementById('passwd').value = 'weibo123' ")
        
    }
    
    
}


//遵守webview的协议
extension HMOAuthViewController: UIWebViewDelegate{
    
    //webview开始加载的方法
    func webViewDidStartLoad(webView: UIWebView) {
        
       //开启等待指示器 让用户知道在登陆 提升用户体验
        SVProgressHUD.show()
        
    }
    

    
    //webview加载完成的方法
    func webViewDidFinishLoad(webView: UIWebView) {
        
        //当页面加载完毕 设置导航条标题
        let webTitle = webView.stringByEvaluatingJavaScriptFromString("document.title")
        title = webTitle
        
        //取消用户等待指示器
        SVProgressHUD.dismiss()

        
    }
    
    ////在授权成功的回调页中获取 授权code  返回true正常工作 返回false不工作 
    //当发送一个请求 请求webview页面内容  两个页面交互的时候调用 
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
       // print(request)
        //获取授权成功回调页中的urlString
        let urlString=request.URL?.absoluteString ?? ""
        
        //满足字符串中包好了 code=
        let flag="code="
        
        if urlString.containsString(flag){
            
           //授权成功
            let range=urlString.rangeOfString(flag)!
            let code=urlString.substringFromIndex(range.endIndex)
            
            print(code)
            
            //使用授权码  获取accesstoken
          HMUserAccountViewModel.sharedAccountViewModel.loadAccessToken(code, finished: { (isSuccess) -> () in
            
            
            if !isSuccess {
                //表示登录失败
                SVProgressHUD.showErrorWithStatus("登录失败")
                return
            }

            //表示登陆成功
            //SVProgressHUD.showSuccessWithStatus("登录成功")
            //跳转到欢迎页面 (用户名 + 用户头像)
            //OAuth 是一个被 modal出来的页面  需要手动dismiss 不然会造成页面无法释放
            self.dismissViewControllerAnimated(false, completion: { () -> Void in
                //发送通知
                 NSNotificationCenter.defaultCenter().postNotificationName(HMSwitchRootViewController, object: nil)
                
            })

            
          })
            //不加载授权成功的回调页面
                return false
            
        }
        
        
        
        return true
    }
    
    
    
}


